/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package szerelomuhelynyilvantartas;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author csatari
 */
public class Betöltés {
    /**
     * Bekér egy szerelő nevet, kikeresi a fájlból az adatait, majd ezt a Szerelőt adja vissza
     * @return 
     */
    static List<Szerelő> szerelők = new LinkedList<>();
    public static Szerelő beléptetSzerelő() {
        String szerelőNeve = JOptionPane.showInputDialog("Kérem írja be a szerelő nevét: ");
        if(szerelőNeve == null) {
            System.exit(0);
        }
        szerelőkBetöltése();
        Szerelő szerelő = kikeresFájlból(szerelőNeve);
        return szerelő;
    }
    private static void szerelőkBetöltése() {
        if(SzereloMuhelyNyilvantartas.szerelők.isEmpty()) {
            BufferedReader br = null;
            try {
                br = new BufferedReader(new FileReader("szerelok.txt"));
                String sor;
                while((sor = br.readLine()) != null) {
                    String[] részek = sor.split("\\|");
                    szerelők.add(new Szerelő(részek[0],Integer.parseInt(részek[1])));
                }
            }
            catch(IOException ex) {
                System.out.println("Hiba a fájl olvasásánál: szerelok.txt");
            }
            finally {
                if(br!=null) {
                    try {
                        br.close();
                    }
                    catch(IOException ex) {
                        System.out.println("Hiba a fájl bezárásánál: szerelok.txt");
                    }
                }
            }
        }
    }
    private static Szerelő kikeresFájlból(String név) {
        for(Szerelő szerelő : szerelők) {
            if(szerelő.getNév().equals(név)) {
                return szerelő;
            }
        }
        return null;
    } 

    public static List<Szerelő> getSzerelők() {
        return szerelők;
    }
    public static void munkalapokBetöltése() {
        Munkalap munkalap = null;
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("munkalapok.txt"));
            String sor;
            int állapot = 1;
            Szerelő szerelő = null;
            Calendar felvételIdőpont = null;
            boolean kifizetve = false;
            Tulaj tulaj = null;
            Autó autó = null;
            while((sor = br.readLine()) != null) {
                String[] részek;
                részek = sor.split("\\|");
                
                //1. sor
                if(állapot == 1) {
                    szerelő = Szerelő.keresSzerelő(részek[0]);
                    felvételIdőpont = Calendar.getInstance();
                    felvételIdőpont.setTimeInMillis(Long.parseLong(részek[1]));
                    kifizetve = Boolean.parseBoolean(részek[2]);
                    állapot++;
                }
                //2. sor
                else if(állapot == 2) {
                    try {
                        tulaj = new Tulaj(részek[0],részek[1],részek[2]);
                    } catch(Exception ex) {
                        System.out.println(ex.getMessage());
                    }
                    állapot++;
                }
                //3. sor
                else if(állapot == 3) {
                    try {
                        autó = new Autó(részek[0],részek[1],részek[2],Integer.parseInt(részek[3]));
                    } catch(Exception ex) {
                        System.out.println(ex.getMessage());
                    }
                    állapot++;
                }
                else {
                    if(állapot>0) {
                        try {
                            munkalap = new Munkalap(szerelő,autó,tulaj);
                            munkalap.setKifizetve(kifizetve);
                            munkalap.setFelvételIdőpont(felvételIdőpont);
                            állapot = 0;
                        }
                        catch(Exception ex) {
                            System.out.println("Hiányos fájl, nem lehetett beállítani az egyik munkalapot!");
                        }
                    }
                    if(!részek[0].equals("------")) {
                    //Munkafolyamat
                        switch (részek[0]) {
                            case "1":
                                Munkafolyamat munkafolyamat = new Munkafolyamat(
                                        Integer.parseInt(részek[1]), Szerelő.keresSzerelő(részek[2]));
                                munkalap.hozzáad(munkafolyamat);
                                break;
                            case "2":
                                
                                Anyag anyag = new Anyag(részek[1],
                                        Integer.parseInt(részek[2]),Integer.parseInt(részek[3]));
                                munkalap.hozzáad(anyag);
                                break;
                            case "3":
                                Alkatrész alkatrész = new Alkatrész(részek[1], 
                                        Integer.parseInt(részek[2]),Integer.parseInt(részek[3]));
                                munkalap.hozzáad(alkatrész);
                                break;
                        }
                    }
                    else {
                        állapot = 1;
                        SzereloMuhelyNyilvantartas.munkalapok.add(munkalap);
                    }
                }
            }
        }
        catch(IOException ex) {
            System.out.println("Hiba a fájl olvasásánál: munkalapok.txt");
        }
        finally {
            if(br!=null) {
                try {
                    br.close();
                }
                catch(IOException ex) {
                    System.out.println("Hiba a fájl bezárásánál: munkalapok.txt");
                }
            }
        }
    }
}
